<?xml version="1.0" encoding="UTF-8"?>
<html filename="docs/SAXHelpers/TXMLReaderImpl.html">
<body>
<a id="#top"/>
<h1>
	                Class Summary : TXMLReaderImpl </h1> Base class for deriving an XML Reader.
<h2>
	              Methods
	            </h2>
<div style="padding-left:10px">
<a href="#checkNotParsing">
	                  procedure
	                 checkNotParsing(SAXString, SAXString)</a>
<br/>
<a href="#setColumnNumber">
	                  procedure
	                 setColumnNumber(Integer)</a>
<br/>
<a href="#setLineNumber">
	                  procedure
	                 setLineNumber(Integer)</a>
<br/>
<a href="#setPublicId">
	                  procedure
	                 setPublicId(PSAXChar)</a>
<br/>
<a href="#setSystemId">
	                  procedure
	                 setSystemId(PSAXChar)</a>
<br/>
<a href="#parseInput">
	                  procedure
	                 parseInput(IInputSource)</a>
<br/>
<a href="#getFeature">
	                  function
	                 getFeature(SAXString) : Boolean</a>
<br/>
<a href="#setFeature">
	                  procedure
	                 setFeature(SAXString, Boolean)</a>
<br/>
<a href="#getProperty">
	                  function
	                 getProperty(SAXString) : IProperty</a>
<br/>
<a href="#setEntityResolver">
	                  procedure
	                 setEntityResolver(IEntityResolver)</a>
<br/>
<a href="#getEntityResolver">
	                  function
	                 getEntityResolver() : IEntityResolver</a>
<br/>
<a href="#setDTDHandler">
	                  procedure
	                 setDTDHandler(IDTDHandler)</a>
<br/>
<a href="#getDTDHandler">
	                  function
	                 getDTDHandler() : IDTDHandler</a>
<br/>
<a href="#setContentHandler">
	                  procedure
	                 setContentHandler(IContentHandler)</a>
<br/>
<a href="#getContentHandler">
	                  function
	                 getContentHandler() : IContentHandler</a>
<br/>
<a href="#setErrorHandler">
	                  procedure
	                 setErrorHandler(IErrorHandler)</a>
<br/>
<a href="#getErrorHandler">
	                  function
	                 getErrorHandler() : IErrorHandler</a>
<br/>
<a href="#parse">
	                  procedure
	                 parse(IInputSource)</a>
<br/>
<a href="#parse">
	                  procedure
	                 parse(SAXString)</a>
<br/>
<a href="#getPublicId">
	                  function
	                 getPublicId() : PSAXChar</a>
<br/>
<a href="#getSystemId">
	                  function
	                 getSystemId() : PSAXChar</a>
<br/>
<a href="#getLineNumber">
	                  function
	                 getLineNumber() : Integer</a>
<br/>
<a href="#getColumnNumber">
	                  function
	                 getColumnNumber() : Integer</a>
<br/>
</div>
<br/>
<h2>
	                Properties
	              </h2>
<div style="padding-left:10px"/>
<br/>
<hr width="100%"/>
<a name="#checkNotParsing">
<p>
<b>procedure</b> checkNotParsing(<b>const</b> propType : SAXString; <b>const</b> name : SAXString); </p>
</a> Check if we are already parsing

 <p>Throw an exception if we are parsing. Use this method to
 detect illegal feature or property changes.</p>

<br/><b>Parameter : </b> propType A string value containing the type of property that
                 cannot be changed while parsing.
<br/><b>Parameter : </b> name A string value containing the name of the property that
                 cannot be changed while parsing.
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setColumnNumber">
<p>
<b>procedure</b> setColumnNumber( value : Integer); </p>
</a><br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setLineNumber">
<p>
<b>procedure</b> setLineNumber( value : Integer); </p>
</a><br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setPublicId">
<p>
<b>procedure</b> setPublicId( value : PSAXChar); </p>
</a><br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setSystemId">
<p>
<b>procedure</b> setSystemId( value : PSAXChar); </p>
</a><br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#parseInput">
<p>
<b>procedure</b> parseInput(<b>const</b> input : IInputSource); </p>
</a><br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getFeature">
<p>
<b>function</b> getFeature(<b>const</b> name : SAXString) : Boolean; </p>
</a> Look up the value of a feature.

 <p>The feature name is any fully-qualified URI.  It is
 possible for an XMLReader to recognize a feature name but
 to be unable to return its value; this is especially true
 in the case of an adapter for a SAX1 Parser, which has
 no way of knowing whether the underlying parser is
 performing validation or expanding external entities.</p>

 <p>All XMLReaders are required to recognize the
 http://xml.org/sax/features/namespaces and the
 http://xml.org/sax/features/namespace-prefixes feature names.</p>

 <p>Some feature values may be available only in specific
 contexts, such as before, during, or after a parse.</p>

 <p>Typical usage is something like this:</p>

 <pre>
 var
   r : IXMLReader;
 begin
   r:= TMySAXDriver.Create() as IXMLReader;

   // try to activate validation
   try
     r.setFeature('http://xml.org/sax/features/validation', true);
   except
     on e : ESAXException do
     begin
       Showmessage('Cannot activate validation.');
     end;
   end;

   // register event handlers
   r.setContentHandler(TMyContentHandler.Create() as IContentHandler);
   r.setErrorHandler(TMyErrorHandler.Create() as IErrorHandler);

   // parse the first document
   try
     r.parse('file://c:/mydoc.xml');
   except
     on e : ESAXException do
     begin
       Showmessage('XML exception reading document.');
     end;
     on e : Exception do
     begin
       Showmessage('Exception reading document.');
     end;
   end;
 </pre>

 <p>Implementors are free (and encouraged) to invent their own features,
 using names built on their own URIs.</p>

<br/><b>Parameter : </b> name The feature name, which is a fully-qualified URI.
<br/><b>Result : </b> The current state of the feature (true or false).
<br/><b>Exception : </b> ESAXNotRecognizedException When the
            XMLReader does not recognize the feature name.
<br/><b>Exception : </b> ESAXNotSupportedException When the
            XMLReader recognizes the feature name but
            cannot determine its value at this time.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setFeature">TXMLReaderImpl.setFeature</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setFeature">
<p>
<b>procedure</b> setFeature(<b>const</b> name : SAXString;  value : Boolean); </p>
</a> Set the state of a feature.

 <p>The feature name is any fully-qualified URI.  It is
 possible for an XMLReader to recognize a feature name but
 to be unable to set its value; this is especially true
 in the case of an adapter for a SAX1 <a href="../SAX/IParser.html">Parser</a>,
 which has no way of affecting whether the underlying parser is
 validating, for example.</p>

 <p>All XMLReaders are required to support setting
 http://xml.org/sax/features/namespaces to true and
 http://xml.org/sax/features/namespace-prefixes to false.</p>

 <p>Some feature values may be immutable or mutable only
 in specific contexts, such as before, during, or after
 a parse.</p>

<br/><b>Parameter : </b> name The feature name, which is a fully-qualified URI.
<br/><b>Parameter : </b> state The requested state of the feature (true or false).
<br/><b>Exception : </b> ESAXNotRecognizedException When the
            XMLReader does not recognize the feature name.
<br/><b>Exception : </b> ESAXNotSupportedException When the
            XMLReader recognizes the feature name but
            cannot set the requested value.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getFeature">TXMLReaderImpl.getFeature</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getProperty">
<p>
<b>function</b> getProperty(<b>const</b> name : SAXString) : IProperty; </p>
</a> Look up the value of a property.

 <p>The property name is any fully-qualified URI.  It is
 possible for an XMLReader to recognize a property name but
 temporarily be unable to return its value
 Some property values may be available only in specific
 contexts, such as before, during, or after a parse.</p>

 <p>XMLReaders are not required to recognize any specific
 property names, though an initial core set is documented for
 SAX2.</p>

 <p>Implementors are free (and encouraged) to invent their own properties,
 using names built on their own URIs.</p>

 <p> Within SAX for Pascal property setting is handled through
 the interface that is returned by the call to getProperty. This
 eliminates the need for multiple lookups in tight loop situations
 as a user can maintain a reference to the interface.</p>

<br/><b>Parameter : </b> name The property name, which is a fully-qualified URI.
<br/><b>Result : </b>s An Interface that allows the getting and setting of the property
<br/><b>Exception : </b> ESAXNotRecognizedException If the property
            interface cannot be retrieved.
<br/><b>Exception : </b> ESAXNotSupportedException When the
            XMLReader recognizes the property name but
            cannot determine its interface value at this time.
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setEntityResolver">
<p>
<b>procedure</b> setEntityResolver(<b>const</b> resolver : IEntityResolver); </p>
</a> Allow an application to register an entity resolver.

 <p>If the application does not register an entity resolver,
 the XMLReader will perform its own default resolution.</p>

 <p>Applications may register a new or different resolver in the
 middle of a parse, and the SAX parser must begin using the new
 resolver immediately.</p>

<br/><b>Parameter : </b> resolver The entity resolver.
<br/><b>Exception : </b> Exception If the resolver argument is nil.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getEntityResolver">TXMLReaderImpl.getEntityResolver</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getEntityResolver">
<p>
<b>function</b> getEntityResolver() : IEntityResolver; </p>
</a> Return the current entity resolver.

<br/><b>Result : </b> The current entity resolver, or nil if none
         has been registered.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setEntityResolver">TXMLReaderImpl.setEntityResolver</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setDTDHandler">
<p>
<b>procedure</b> setDTDHandler(<b>const</b> handler : IDTDHandler); </p>
</a> Allow an application to register a DTD event handler.

 <p>If the application does not register a DTD handler, all DTD
 events reported by the SAX parser will be silently ignored.</p>

 <p>Applications may register a new or different handler in the
 middle of a parse, and the SAX parser must begin using the new
 handler immediately.</p>

<br/><b>Parameter : </b> handler The DTD handler.
<br/><b>Exception : </b> Exception If the handler argument is nil.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getDTDHandler">TXMLReaderImpl.getDTDHandler</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getDTDHandler">
<p>
<b>function</b> getDTDHandler() : IDTDHandler; </p>
</a> Return the current DTD handler.

<br/><b>Result : </b> The current DTD handler, or nil if none
         has been registered.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setDTDHandler">TXMLReaderImpl.setDTDHandler</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setContentHandler">
<p>
<b>procedure</b> setContentHandler(<b>const</b> handler : IContentHandler); </p>
</a> Allow an application to register a content event handler.

 <p>If the application does not register a content handler, all
 content events reported by the SAX parser will be silently
 ignored.</p>

 <p>Applications may register a new or different handler in the
 middle of a parse, and the SAX parser must begin using the new
 handler immediately.</p>

<br/><b>Parameter : </b> handler The content handler.
<br/><b>Exception : </b> Exception If the handler argument is nil.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getContentHandler">TXMLReaderImpl.getContentHandler</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getContentHandler">
<p>
<b>function</b> getContentHandler() : IContentHandler; </p>
</a> Return the current content handler.

<br/><b>Result : </b> The current content handler, or nil if none
         has been registered.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setContentHandler">TXMLReaderImpl.setContentHandler</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#setErrorHandler">
<p>
<b>procedure</b> setErrorHandler(<b>const</b> handler : IErrorHandler); </p>
</a> Allow an application to register an error event handler.

 <p>If the application does not register an error handler, all
 error events reported by the SAX parser will be silently
 ignored; however, normal processing may not continue.  It is
 highly recommended that all SAX applications implement an
 error handler to avoid unexpected bugs.</p>

 <p>Applications may register a new or different handler in the
 middle of a parse, and the SAX parser must begin using the new
 handler immediately.</p>

<br/><b>Parameter : </b> handler The error handler.
<br/><b>Exception : </b> Exception If the handler argument is nil.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getErrorHandler">TXMLReaderImpl.getErrorHandler</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getErrorHandler">
<p>
<b>function</b> getErrorHandler() : IErrorHandler; </p>
</a> Return the current error handler.

<br/><b>Result : </b> The current error handler, or nil if none
         has been registered.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setErrorHandler">TXMLReaderImpl.setErrorHandler</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#parse">
<p>
<b>procedure</b> parse(<b>const</b> input : IInputSource); </p>
</a> Parse an XML document.

 <p>The application can use this method to instruct the XML
 reader to begin parsing an XML document from any valid input
 source (a character stream, a byte stream, or a URI).</p>

 <p>Applications may not invoke this method while a parse is in
 progress (they should create a new XMLReader instead for each
 nested XML document).  Once a parse is complete, an
 application may reuse the same XMLReader object, possibly with a
 different input source.</p>

 <p>During the parse, the XMLReader will provide information
 about the XML document through the registered event
 handlers.</p>

 <p>This method is synchronous: it will not return until parsing
 has ended.  If a client application wants to terminate
 parsing early, it should throw an exception.</p>

<br/><b>Parameter : </b> source The input source for the top-level of the
        XML document.
<br/><b>Exception : </b> ESAXException Any SAX exception.
<br/><b>Exception : </b> Exception An IO exception from the parser,
            possibly from a byte stream or character stream
            supplied by the application.
<br/><b>See : </b> <a href="../SAX/TInputSource.html">TInputSource</a>
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#parse.SAXString">TXMLReaderImpl.parse(SAXString)</a>
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setEntityResolver">TXMLReaderImpl.setEntityResolver</a>
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setDTDHandler">TXMLReaderImpl.setDTDHandler</a>
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setContentHandler">TXMLReaderImpl.setContentHandler</a>
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#setErrorHandler">TXMLReaderImpl.setErrorHandler</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#parse">
<p>
<b>procedure</b> parse(<b>const</b> systemId : SAXString); </p>
</a> Parse an XML document from a system identifier (URI).

 <p>This method is a shortcut for the common case of reading a
 document from a system identifier.  It is the exact
 equivalent of the following:</p>

 <pre>
 input:= TInputSource.Create(systemId);
 try
   parse(input);
 finally
   input.Free;
 end;
 </pre>

 <p>If the system identifier is a URL, it must be fully resolved
 by the application before it is passed to the parser.</p>

<br/><b>Parameter : </b> systemId The system identifier (URI).
<br/><b>Exception : </b> ESAXException Any SAX exception.
<br/><b>Exception : </b> Exception An IO exception from the parser,
            possibly from a byte stream or character stream
            supplied by the application.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#parse.TInputSource">TXMLReaderImpl.parse(TInputSource)</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getPublicId">
<p>
<b>function</b> getPublicId() : PSAXChar; </p>
</a> Return the public identifier for the current document event.

 <p>The return value is the public identifier of the document
 entity or of the external parsed entity in which the markup
 triggering the event appears.</p>

<br/><b>Result : </b> A string containing the public identifier, or
         empty if none is available.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getSystemId">TXMLReaderImpl.getSystemId</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getSystemId">
<p>
<b>function</b> getSystemId() : PSAXChar; </p>
</a> Return the system identifier for the current document event.

 <p>The return value is the system identifier of the document
 entity or of the external parsed entity in which the markup
 triggering the event appears.</p>

 <p>If the system identifier is a URL, the parser must resolve it
 fully before passing it to the application.</p>

<br/><b>Result : </b> A string containing the system identifier, or empty
         if none is available.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getPublicId">TXMLReaderImpl.getPublicId</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getLineNumber">
<p>
<b>function</b> getLineNumber() : Integer; </p>
</a> Return the line number where the current document event ends.

 <p>
      <strong>Warning:</strong> The return value from the method
 is intended only as an approximation for the sake of error
 reporting; it is not intended to provide sufficient information
 to edit the character content of the original XML document.</p>

 <p>The return value is an approximation of the line number
 in the document entity or external parsed entity where the
 markup triggering the event appears.</p>

 <p>If possible, the SAX driver should provide the line position
 of the first character after the text associated with the document
 event.  The first line in the document is line 1.</p>

<br/><b>Result : </b> The line number, or -1 if none is available.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getColumnNumber">TXMLReaderImpl.getColumnNumber</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#getColumnNumber">
<p>
<b>function</b> getColumnNumber() : Integer; </p>
</a> Return the column number where the current document event ends.

 <p>
      <strong>Warning:</strong> The return value from the method
 is intended only as an approximation for the sake of error
 reporting; it is not intended to provide sufficient information
 to edit the character content of the original XML document.</p>

 <p>The return value is an approximation of the column number
 in the document entity or external parsed entity where the
 markup triggering the event appears.</p>

 <p>If possible, the SAX driver should provide the line position
 of the first character after the text associated with the document
 event.</p>

 <p>If possible, the SAX driver should provide the line position
 of the first character after the text associated with the document
 event.  The first column in each line is column 1.</p>

<br/><b>Result : </b> The column number, or -1 if none is available.
<br/><b>See : </b> <a href="../SAXHelpers/TXMLReaderImpl.html#getLineNumber">TXMLReaderImpl.getLineNumber</a>
<br/>
<p>
<a href="#top">Top</a>
</p>
<div style="padding-left:10px">
<hr width="100%"/>
<a name="#useNamespaces">
<p> <b>useNamespaces</b>
</p>
</a><br/>
<p style="margin-left:30px">
<code>property useNamespaces: Boolean read Fnamespaces write Fnamespaces</code>
</p>
<p>
<a href="#top">Top</a>
</p>
<hr width="100%"/>
<a name="#usePrefixes">
<p> <b>usePrefixes</b>
</p>
</a><br/>
<p style="margin-left:30px">
<code>property usePrefixes: Boolean read Fprefixes write Fprefixes</code>
</p>
<p>
<a href="#top">Top</a>
</p>
</div>
<br/>
</body>
</html>